package br.uvv.Service;

import java.io.Serializable;
import java.util.List;

import org.primefaces.model.SortOrder;

import br.uvv.Dao.PerfilDAO;
import br.uvv.Dao.UsuarioDAO;
import br.uvv.Model.Perfil;
import br.uvv.Model.Usuario;
import br.uvv.Util.DAOException;
import br.uvv.Util.RNException;

public class UsuarioService implements Serializable {

	private static final long serialVersionUID = 2310091665586839549L;
	
	private UsuarioDAO usuarioDao = new UsuarioDAO();

	public List<Usuario> listarUsuario() throws RNException {
		try {
			return usuarioDao.listar();
		} catch (DAOException e){
			throw new RNException(e);
		}
	}

	public Usuario selecionarUsuario(Long id) throws RNException {
		try {
			return usuarioDao.selecionar(id);
		} catch (DAOException e){
			throw new RNException(e);
		}
	}
	
	public void removerUsuario(Usuario usuarioInstance) throws RNException {
		try {
			usuarioDao.remover(usuarioInstance);
		} catch (DAOException e){
			throw new RNException(e);
		}
	}

	public void salvarUsuario(Usuario usuarioInstance) throws RNException {
		try {
			usuarioDao.salvar(usuarioInstance);
		} catch (DAOException e){
			throw new RNException(e);
		}
	}

	public List<Perfil> listarPerfil() throws RNException {
		try {
			PerfilDAO daoPerfil = new PerfilDAO();
			return daoPerfil.listar();
		} catch (DAOException e) {
			throw new RNException(e);
		}
	}

	public Usuario selecionarUsuarioComClienteEPerfil(Long id) throws RNException {
		try {
			return usuarioDao.selecionarComClienteEPerfil(id);
		} catch (DAOException e){
			throw new RNException(e);
		}
	}

	public int usuarioCount(String varBuscaNome, String varBuscaEmail,
			String varBuscaCliente) {
		return 0;
	}

	public List<Usuario> listarUsuario(int first, int pageSize,
			String sortField, SortOrder sortOrder, String varBuscaNome,
			String varBuscaEmail, String varBuscaCliente) throws RNException {
		
		return null;
	}	
}
